It is currently recommended that the game be played in Project 64 1.6 (preferably by both players) by the "host" player (to be decided by the players).

The players should use an input plugin with their emulator that is the same for everyone and which supports netplay; the plugin by AQZ is recommended.

At the time of this writing, this thread is a good resource for information on how to use the plugin:

http://forum.pj64-emu.com/showthread.php?t=1973

Remember to do necessary things like forwarding your ports and, if that's not enough, giving your PC a static local IP to make acting as a host/server player easier.

Beyond that, it should be noted that the recommended use of the netplay plugin is not the usual way, but to set the lag to 0 (literally by entering "/lag 0" in the plugin's console window).

From there, have the client players (NOT the host/server player) enter this code into their emulator's cheat menu:

81105304 0000
81105306 0000

8110530C 0000
8110530E 0000

81105314 0000
81105316 0000

8110531C 0000
8110531E 0000

This will disable their input, so their game doesn't play in the background while using the alternative method described later.

Next they should disable their emulator's audio.

Once they've connected to the host via the input plugin, they should move the emulator's window out of the way so that it can be selected to receive focus/input without being distracting.

For actual play, a remote desktop system like the service provided at the website "https://join.me/" should be used to transfer video data and perhaps audio data (though another utility may be preferred).

The latency of using a remote desktop system for video is comparable to that of using a Kaillera client, and because the host's video and audio is being used directly by the other players there can be no desynchronization issues.

Desynchronization issues which were the reason more sane methods of playing the hack online don't work, could only be solved, if at all, by using a better emulator, but the hack doesn't work in them due to its complexity.

It is likely possible to use a solid virtual operating system to make the remote desktop connection more secure, and the service provided by join.me in particular does not allow remote control by default (it must be granted by the host; only video is shared by default).

Below are the deprecated instructions for playing online using an older version of the hack that worked with Kaillera but which was prone to desynchronization.

The old version of the hack referenced has no patch for it built and included with the other materials and must be built by those interested in trying it themselves.

For those curious, events occurring during gameplay can cause input to be ignored for a short time, resulting in the netplay plugin halting the game for everyone while the emulator that caused the delay catches up.

The code which disables input keeps client players able to send input to the host so they can play while leaving the game at the title screen on their side of the connection such that it can't cause any issues.

~~~~~

NOTE

The below instructions are deprecated and only apply if you're using an older version of the hack.

~~~~~

The utility in the "Online Hack" folder is a Java application which accepts a ROM and a .fla file for it and, if the prompts are followed correctly, prepares a ROM with the save "embedded" for playing online (typically in Mupen64++ Beta 0.1.3.12 over Kaillera).
Give your friend your save and let them use it with the same responses to the prompts as your own to ensure you both have the same results.
WARNING: Emulators tend to be screwy with file handles regarding saves. If you copy your save to another location before using it with the utility it's possible the save's copy won't actually contain the same data.
Other oddities may appear for similar reasons; try not to do anything fancy.

It is a Java application, so read this and/or use "Drive.bat" to figure out how to run the application:

http://www.cs.swarthmore.edu/~newhall/unixhelp/debuggingtips_Java.html#compiling

You may have problems with your "path" such that running "Drive.bat" reports that "java.exe" can't be found.

If this happens, find "java.exe" in the bin folder of your Java Runtime Environment and add the path to that folder to your system path; here is how:

1. From the desktop, right-click My Computer and click Properties.
2. In the System Properties window, click on the Advanced tab.
3. In the Advanced section, click the Environment Variables button.
4. Finally, in the Environment Variables window, highlight the Path variable in the Systems Variable section and click the Edit button. Add or modify the path lines with the paths you wish the computer to access. Each different directory is separated with a semicolon as shown below.

C:\Program Files;C:\Winnt;C:\Winnt\System32

So for example you would change the above to "C:\Program Files;C:\Winnt;C:\Winnt\System32;C:\Program Files\Java\jre6\bin;" if that was where java.exe was for you (obviously you will need to install the latest version of Java if you haven't already).

~~~~~

These instructions are for manually performing what the application detailed above does.
If the application mentioned above works you don't need to read this section; skip to the next set of tildes.

- "Embed your save", done by copying the first 0x538 bytes of the save over the last 0x538 bytes in the ROM.
	Saves from emulators are stored in little endian but the ROM and thus the save copied into it must be in big endian

- "NOP" the DMA instructions in the trainer
	Done by searching for the 12 bytes after the hex string 0xDEADC0DE (big endian) in the ROM after the address 0x01FFF000 and changing them all to 0x00.

- Saves are stored in the .fla file at every 0x4000 bytes starting at address 0x0; for example save 1 is at 0x0, save 2 is at 0x4000 and save 6 is at 0x14000.

- The .fla file will be in the emulator's save directory.

- It will also likely be in little endian and the data will need to be converted to big endian before pasting somehow (as noted above).

- ROMs and saves will need to be the same for all players involved.

- Saves will have to be "embedded" into the ROM each time the game is reset or powered off (perhaps due to a crash).

- Every time saves are "embedded" into the ROM the ROM will have to be updated for the other players as well; this means sharing .fla files.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

After doing the above you should be ready to play the hack online with a friend or friends in Mupen64++ Beta 0.1.3.12 over Kaillera.

The instructions below are shamelessly ripped from http://www.goldeneyeonline.com/ and modified with information I've learned from personal experience.

~~~~~

Step 1: Get this version of Mupen:

Mupen64++ Beta 0.1.3.12

It's important for all players to have the same version and this version has been confirmed to work.

~~~~~

Step 2: Get the graphics plugins you will need. The version of Mupen mentioned above comes with Jabo 1.6 which works great and can even work for bosses with the correct settings (specified elsewhere).

However only the Rice 6.1.1 plugin will work for Lupus's nightvision area in single player (in co-op it won't matter since the effect that causes sight problems won't activate then).

~~~~~

Step 3: Configure controllers

Configure them like you normally would, but for ALL FOUR PLAYERS' controllers, EVEN IF you're not playing with more than 1 or 2 people, you must do the following:

In the input plugin menu, click the "Controller Pak" tab and make sure the "RawData" checkbox is NOT checked for ALL FOUR controllers.

~~~~~

Step 4: Configure directories

Go to Options -> Settings -> Directories (tab) and add the directory of the hacked ROM to the list.

It is recommended that you remove all other directories from the list but the one containing the hacked ROM and have that ROM be the only one in the directory it's in.

This is because the hacked ROM will not be recognized due to...being hacked...and therefore will appear with the name "Unknown Dump" in Kaillera, making it difficult to pick out of your list if you have other hacked or unrecognized ROMs.

~~~~~

Step 5: Confirm ROM version

You should have already done this by now. Skip this step.

~~~~~

Step 6: Confgiure graphics plugin

You should have already done this by now too.

~~~~~

Step 7: Choose the correct plugins

If you downloaded the emulator from the link at the site these instructions are from, which was this:

http://www.goldeneyeonline.com/downloads/Mupen64%2B%2B_Beta_0.1.3.12.zip

the correct settings should already be specified.

They are:

Video: Jabo's Direct3D8 1.6
	(mentioned elsewhere;
	note that Rice 6.1.1 is also recommended for the night vision part of the game
	although you should be able to bypass the need for the Rice plugin, as noted above)


Input: N-Rage's Direct-Input8 1.60

Sound: Azimer's HLE Audio v0.56 WIP 2

RSP: Hacktarux/Azimer hle rsp plugin

~~~~~

Step 8: Go online

Utilities -> KailleraClient (NetPlay)

In the window that pops up, change the connection setting to "LAN (60 packets/s)".
IF YOU ARE DESYNC'ING A LOT when you play with your friends, consider choosing a lower setting than "LAN" such as "Good (20 packets/s)" (which is the default) to decrease the changes of desync.
Note that if you do this the game may desync less often or not at all, but it may also be harder to play due to increased input latency.
Ensure the "Change Mode" is set to "2. Client".

Click the "Master Servers List" and wait for the other players to get to where you are.

Sort the servers by ping from lowest to highest, top to bottom and negotiate which server to join with the other players based on which one has the lowest overall ping, all players considered.

Join the server you've decided on by double clicking it, then have the player with the HIGHEST ping host the game.
For some reason it desyncs otherwise, at least from personal experience.
This is done by right clicking in the game list under the chat and selecting the hacked ROM.
Other players should then join by right clicking the game you've hosted and selecting "Join".

~~~~~

Step 9: Play the game or refer to GoldenEye Online

If you're having problems or are curious, refer to where these instructions are from for more information:

http://www.goldeneyeonline.com/

Otherwise, have fun~
